//
//  GLNetworkManager.m
//  AFNetworkingTool
//
//  Created by CoderGL on 15/11/5.
//  Copyright © 2015年 CoderGL. All rights reserved.
//

#import "GLNetworkManager.h"

@implementation GLNetworkManager

+ (void)netWorkingStatusSuccess:(void(^)())success failure:(void(^)())failure {
    [AFNetworkingTool netWorkingStatusNotReachable:^{
        if (failure) {
            failure();
        }
    } ReachableViaWWAN:^{
        if (success) {
            success();
        }
        
    } ReachableViaWiFi:^{
        if (success) {
            success();
        }
    }];
}

/**
 *  get请求
 *
 *  @param url         url
 *  @param param       参数
 *  @param resultClass 传模型返回的就是转换好的模型 传空 返回的就是字典
 *  @param success     success
 *  @param failure     failure
 */
+ (void)getWithUrl:(NSString *)url param:(id)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure {
    // 将模型转换成字典
    NSDictionary *params = [param keyValues];
    
    // 网络工具类 去做网络请求
    [AFNetworkingTool getWithUrl:url params:params success:^(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject) {
        
        // 如果没有模型 返回原来的数据(字典)
        if (!resultClass) {
            if (success) {
                success(responseObject);
            }
            return ;
        }
        
        // 如果有模型 直接返回 字典转换好的模型
        id result = [resultClass objectWithKeyValues:responseObject];
        if (success) {
            success(result);
        }
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nullable error) {
        if (failure) {
            failure(error);
        }
    }];
}

/**
 *  post请求
 *
 *  @param url         url
 *  @param param       参数
 *  @param resultClass 传模型返回的就是转换好的模型 传空 返回的就是字典
 *  @param success     success
 *  @param failure     failure
 */
+ (void)postWithUrl:(NSString *)url param:(id)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure {
    // 将模型转换成字典
    NSDictionary *params = [param keyValues];

    // 网络工具类 去做网络请求
    [AFNetworkingTool postWithUrl:url params:params success:^(NSURLSessionDataTask * _Nullable task, NSDictionary * _Nullable responseObject) {
        // 如果没有模型 返回原来的数据(字典)
        if (!resultClass) {
            if (success) {
                success(responseObject);
            }
            return ;
        }
        
        // 如果有模型 直接返回 字典转换好的模型
        id result = [resultClass objectWithKeyValues:responseObject];
        if (success) {
            success(result);
        }
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nullable error) {
        if (failure) {
            failure(error);
        }
    }];
    
    
}


@end
